export async function copyFileToAppDir(tempPath) {
    console.log('【复制前路径】tempPath:', tempPath);

    // 环境检测
    const isPlusEnvironment = typeof plus !== 'undefined' && typeof plus.io !== 'undefined';
    const isNodeEnvironment = typeof process !== 'undefined' && process.versions && process.versions.node;

    return new Promise((resolve, reject) => {
        if (isPlusEnvironment) {
            // HBuilder 环境代码
            console.log('🌐 当前运行环境: HBuilder (移动端)');
            plus.io.resolveLocalFileSystemURL(tempPath, (entry) => {
                console.log('✅ 源文件 entry:', entry);

                // 获取目标目录
                plus.io.requestFileSystem(plus.io.PUBLIC_DOCUMENTS, (fs) => {
                    console.log('📁 公共文档目录 Entry:', fs);

                    const targetDir = 'uploads/';
                    fs.root.getDirectory(targetDir, { create: true }, (dirEntry) => {
                        console.log('📁 已创建/找到子目录:', dirEntry.fullPath);

                        // 动态获取文件扩展名并生成新文件名
                        const originalFileName = entry.name; // 获取原始文件名
                        const fileExtension = originalFileName.substring(originalFileName.lastIndexOf('.')); // 提取扩展名
                        const fileName = `upload_${Date.now()}${fileExtension}`; // 动态生成文件名

                        entry.copyTo(dirEntry, fileName, (copiedEntry) => {
                            console.log('✅ 文件已成功复制到', copiedEntry.fullPath);

                            // 使用 plus.storage 存储文件路径
                            try {
                                const savedPaths = JSON.parse(plus.storage.getItem('savedFilePaths')) || [];
                                savedPaths.push(copiedEntry.fullPath);
                                plus.storage.setItem('savedFilePaths', JSON.stringify(savedPaths));
                                console.log('✅ 文件路径已存储到本地存储:', copiedEntry.fullPath);
                            } catch (storageError) {
                                console.error('❌ 存储文件路径失败:', storageError.message);
                            }

                            resolve(copiedEntry.fullPath); // 返回完整路径
                        }, (error) => {
                            console.error('❌ 文件复制失败:', error.message);
                            reject(new Error(`文件复制失败: ${error.message}`));
                        });
                    }, (e) => {
                        console.error('❌ 创建目录失败:', e.message);
                        reject(new Error(`无法创建目标目录: ${e.message}`));
                    });
                }, (e) => {
                    console.error('❌ 请求文件系统失败:', e.message);
                    reject(new Error(`请求文件系统失败: ${e.message}`));
                });
            }, (e) => {
                console.error('❌ 路径解析失败:', e.message);
                reject(new Error(`路径解析失败: ${e.message}`));
            });
        } else if (isNodeEnvironment) {
            // Node.js (Electron) 环境代码
            console.log('🌐 当前运行环境: Node.js (PC 桌面端)');

            const fs = require('fs');
            const path = require('path');
            const os = require('os');

            try {
                const appDataPath = path.join(os.homedir(), 'AppData', 'Local', 'YourAppName'); // 示例路径
                const targetDir = path.join(appDataPath, 'uploads');
                if (!fs.existsSync(targetDir)) {
                    fs.mkdirSync(targetDir, { recursive: true });
                    console.log('📁 已创建目标目录:', targetDir);
                }

                const fileExtension = path.extname(tempPath); // 获取文件扩展名
                const fileName = `upload_${Date.now()}${fileExtension}`; // 动态生成文件名
                const targetPath = path.join(targetDir, fileName);

                fs.copyFileSync(tempPath, targetPath); // 同步复制文件
                console.log('✅ 文件已成功复制到', targetPath);

                resolve(targetPath); // 返回目标路径
            } catch (error) {
                console.error('❌ 文件复制失败:', error.message);
                reject(new Error(`文件复制失败: ${error.message}`));
            }
        } else {
            // 浏览器环境代码
            console.log('🌐 当前运行环境: 浏览器 (Web 应用)');

            const reader = new FileReader();
            reader.onload = function (event) {
                try {
                    const blob = new Blob([event.target.result]); // 创建 Blob 对象
                    const fileName = `upload_${Date.now()}.blob`; // 动态生成文件名

                    // 模拟文件存储到内存（或上传到服务器）
                    console.log('✅ 模拟文件已保存:', fileName);
                    resolve(fileName); // 返回文件名
                } catch (error) {
                    console.error('❌ 文件保存失败:', error.message);
                    reject(new Error(`文件保存失败: ${error.message}`));
                }
            };
            reader.onerror = function (error) {
                console.error('❌ 文件读取失败:', error.message);
                reject(new Error(`文件读取失败: ${error.message}`));
            };
            reader.readAsArrayBuffer(tempPath); // 假设 tempPath 是文件对象
        }
    });
}